package com.Drools.敲定的几种模式;

import org.kie.api.KieBase;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

/**
 * 1.需要 resources/META-INF/kmodule.xml  文件
 * 2.
 *
 */
public class 读文件 {
    public static void main(String[] args) {
        System.setProperty("drools.dateformat","yyy-MM-dd");

        KieServices kieServices = KieServices.Factory.get();//kie整体入口
//        kieServices


        KieContainer kieContainer = kieServices.newKieClasspathContainer();//加载所有 在resources 配置文件路径下
//        kieServices.getKieClasspathContainer("")



        //指定kmodule.xml 的name的文件  相当于 drl 的 package 值;  这个值
        KieBase myKbase0 = kieContainer.getKieBase("myKbase0");
        KieBase myKbase1 = kieContainer.getKieBase("myKbase1");
        KieBase myKbase2 = kieContainer.getKieBase("myKbase2");
        KieBase myKbase3 = kieContainer.getKieBase("myKbase3");

        KieSession kieSession0 = myKbase0.newKieSession();//获取KieSession
        KieSession kieSession1 = myKbase1.newKieSession();
        KieSession kieSession2 = myKbase2.newKieSession();
        KieSession kieSession3 = myKbase3.newKieSession();

        //给kieSession 指定执行的分组   没有分组的默认执行，也可以设定此分组是否需要特殊指明
        kieSession0.getAgenda().getAgendaGroup("001").setFocus();

        System.out.println("------myKbase0--------------------");
        zx(kieSession0);
        System.out.println("------myKbase1--------------------");
        zx(kieSession1);
        System.out.println("------myKbase2--------------------");
        zx(kieSession2);
        System.out.println("------myKbase2--------------------");
        zx(kieSession3);


    }

    private static void zx(KieSession kieSession) {
        kieSession.insert("sssssssssssssssss");//插入数据
//        int i = kieSession.fireAllRules(2);//最多执行2和规则
        int i = kieSession.fireAllRules();//执行
        System.out.println(i);

        kieSession.dispose();//关闭规则
    }
}
